public class DataSourceSingleton2 {
    // 私有的构造方法
    private DataSourceSingleton2() { // ②
    }
    // 私有属性
    private static volatile DataSourceSingleton2 dataSource = new DataSourceSingleton2();// ①

    // 公共的访问方法,得到单例对象
    public static DataSourceSingleton2 getInstance() {
        if(dataSource == null) { // 大致分流执行 ③
            synchronized (DataSourceSingleton2.class) { // 排队执行
    /** +1 */   if(dataSource == null) { // 到这里就只有一个可以被实例化了  ④
                    dataSource = new DataSourceSingleton2(); // ⑤
                }
            }
        }
        return dataSource;
    }
}
